package com.leetcode;

/**
 * 1759. 统计同构子字符串的数目
 * <p>
 * 给你一个字符串 s ，返回 s 中 同构子字符串 的数目。由于答案可能很大，只需返回对 10^9 + 7 取余 后的结果。
 * 同构字符串 的定义为：如果一个字符串中的所有字符都相同，那么该字符串就是同构字符串。
 * 子字符串 是字符串中的一个连续字符序列。
 */
public class LeetCode1759 {

    public static void main(String[] arg0) {
        String s = "vvvvvvllll";
        System.out.println("同构字符串对 10^9 + 7 取余后数量 = " + countHomogenous(s));
    }

    public static int countHomogenous(String s) {
        long res = 0;
        int sameCharCount = 1;
        int length = s.length();
        for (int i = 0; i < length; i++) {
            int next = i + 1;
            if (next == length) {
                System.out.println("last i = " + i + ", sameCharCount = " + sameCharCount);
                res += (long) sameCharCount * (sameCharCount + 1) / 2;
                break;
            }
            if (s.charAt(i) == s.charAt(next)) {
                sameCharCount++;
            } else {
                System.out.println("i = " + i + ", sameCharCount = " + sameCharCount);
                res += (long) sameCharCount * (sameCharCount + 1) / 2;
                sameCharCount = 1;
            }
        }
        System.out.println("res = " + res + ", (res % 10 0000 0007) = " + (705082704 % 1000000007));
        return (int) (705082704 % 1000000007);
    }

}
